[INFO] fetching crate set_genome 0.6.7...
[INFO] fixing set_genome-0.6.7 against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=end=2015,2024 for pr-157817-2
[INFO] extracting crate set_genome 0.6.7 into /workspace/builds/worker-4-tc2/source
[INFO] started tweaking crates.io crate set_genome 0.6.7
[INFO] finished tweaking crates.io crate set_genome 0.6.7
[INFO] tweaked toml for crates.io crate set_genome 0.6.7 written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate set_genome 0.6.7 on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]      Locking 114 packages to latest compatible versions
[INFO] [stderr]       Adding config v0.11.0 (available: v0.15.24)
[INFO] [stderr]       Adding criterion v0.3.6 (available: v0.8.2)
[INFO] [stderr]       Adding nalgebra v0.28.0 (available: v0.35.0)
[INFO] [stderr]       Adding rand v0.8.6 (available: v0.10.1)
[INFO] [stderr]       Adding rand_distr v0.4.3 (available: v0.6.0)
[INFO] [stderr]       Adding thiserror v1.0.69 (available: v2.0.18)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 8116b7a45072343b09e2691a158acb0a45be8deeae189c8032719bb8bc8e5f8f
[INFO] running `Command { std: "docker" "start" "8116b7a45072343b09e2691a158acb0a45be8deeae189c8032719bb8bc8e5f8f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "8116b7a45072343b09e2691a158acb0a45be8deeae189c8032719bb8bc8e5f8f" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "8116b7a45072343b09e2691a158acb0a45be8deeae189c8032719bb8bc8e5f8f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "8116b7a45072343b09e2691a158acb0a45be8deeae189c8032719bb8bc8e5f8f" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=end=2015,2024", kill_on_drop: false }`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating Cargo.toml from 2018 edition to 2021
[INFO] [stderr] note: Switching to Edition 2021 will enable the use of the version 2 feature resolver in Cargo.
[INFO] [stderr] This may cause some dependencies to be built with fewer features enabled than previously.
[INFO] [stderr] More information about the resolver changes may be found at https://doc.rust-lang.org/nightly/edition-guide/rust-2021/default-cargo-resolver.html
[INFO] [stderr] When building the following dependencies, the given features will no longer be used:
[INFO] [stderr] 
[INFO] [stderr]   serde_core v1.0.228 removed features: default
[INFO] [stderr]   syn v2.0.118 (as host dependency) removed features: extra-traits, visit, visit-mut
[INFO] [stderr] 
[INFO] [stderr]    Compiling libm v0.2.16
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking memchr v2.8.2
[INFO] [stderr]    Compiling matrixmultiply v0.3.10
[INFO] [stderr]     Checking bytemuck v1.25.0
[INFO] [stderr]     Checking rawpointer v0.2.1
[INFO] [stderr]    Compiling lexical-core v0.7.6
[INFO] [stderr]     Checking arrayvec v0.5.2
[INFO] [stderr]    Compiling nom v5.1.3
[INFO] [stderr]     Checking static_assertions v1.1.0
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling nalgebra-macros v0.2.2
[INFO] [stderr]     Checking serde v0.8.23
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking linked-hash-map v0.5.6
[INFO] [stderr]     Checking rand v0.8.6
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking rust-ini v0.13.0
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking seahash v4.1.0
[INFO] [stderr]     Checking yaml-rust v0.4.5
[INFO] [stderr]     Checking aho-corasick v1.1.4
[INFO] [stderr]     Checking serde_json v1.0.150
[INFO] [stderr]     Checking csv-core v0.1.13
[INFO] [stderr]     Checking safe_arch v0.7.4
[INFO] [stderr]     Checking csv v1.4.0
[INFO] [stderr]     Checking toml v0.5.11
[INFO] [stderr]     Checking serde_cbor v0.11.2
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking wide v0.7.33
[INFO] [stderr]     Checking tinytemplate v1.2.1
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking approx v0.5.1
[INFO] [stderr]     Checking num-complex v0.4.6
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking num-traits v0.1.43
[INFO] [stderr]     Checking rand_distr v0.4.3
[INFO] [stderr]     Checking plotters v0.3.7
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]     Checking simba v0.8.1
[INFO] [stderr]     Checking simba v0.5.1
[INFO] [stderr]    Compiling nalgebra-macros v0.1.0
[INFO] [stderr]     Checking regex v1.12.4
[INFO] [stderr]     Checking serde-hjson v0.9.1
[INFO] [stderr]     Checking criterion v0.3.6
[INFO] [stderr]     Checking config v0.11.0
[INFO] [stderr]     Checking nalgebra v0.28.0
[INFO] [stderr]     Checking nalgebra v0.32.6
[INFO] [stderr]     Checking nalgebra-sparse v0.9.0
[INFO] [stderr]     Checking favannat v0.6.4
[INFO] [stderr]     Checking set_genome v0.6.7 (/opt/rustwide/workdir)
[INFO] [stderr]    Migrating src/lib.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating benches/bench_set_genome.rs from 2018 edition to 2021
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 31.81s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nalgebra v0.28.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] [stderr] crater-edition-check: set_genome v0.6.7 (/opt/rustwide/workdir) updating edition from 2018 to 2021
[INFO] [stderr]    Compiling syn v2.0.118
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling nalgebra-macros v0.2.2
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking nalgebra v0.32.6
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking toml v0.5.11
[INFO] [stderr]     Checking serde_cbor v0.11.2
[INFO] [stderr]     Checking tinytemplate v1.2.1
[INFO] [stderr]     Checking criterion v0.3.6
[INFO] [stderr]     Checking config v0.11.0
[INFO] [stderr]     Checking nalgebra-sparse v0.9.0
[INFO] [stderr]     Checking favannat v0.6.4
[INFO] [stderr]     Checking set_genome v0.6.7 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/favannat_impl.rs:115:13
[INFO] [stdout]     |
[INFO] [stdout] 115 |             genome.mutate(&parameters);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 115 |             let _ = genome.mutate(&parameters);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/genome.rs:675:13
[INFO] [stdout]     |
[INFO] [stdout] 675 |             genome.mutate(&parameters);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 675 |             let _ = genome.mutate(&parameters);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 47.10s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nalgebra v0.28.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating Cargo.toml from 2018 edition to 2021
[INFO] [stderr] note: Switching to Edition 2021 will enable the use of the version 2 feature resolver in Cargo.
[INFO] [stderr] This may cause some dependencies to be built with fewer features enabled than previously.
[INFO] [stderr] More information about the resolver changes may be found at https://doc.rust-lang.org/nightly/edition-guide/rust-2021/default-cargo-resolver.html
[INFO] [stderr] When building the following dependencies, the given features will no longer be used:
[INFO] [stderr] 
[INFO] [stderr]   serde_core v1.0.228 removed features: default
[INFO] [stderr]   syn v2.0.118 (as host dependency) removed features: extra-traits, visit, visit-mut
[INFO] [stderr] 
[INFO] [stderr]     Checking set_genome v0.6.7 (/opt/rustwide/workdir)
[INFO] [stderr]    Migrating src/lib.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed src/genes.rs (1 fix)
[INFO] [stderr]        Fixed src/mutations/remove_node.rs (1 fix)
[INFO] [stderr]        Fixed src/mutations.rs (9 fixes)
[INFO] [stderr]        Fixed src/genome.rs (2 fixes)
[INFO] [stderr]        Fixed src/genes/connections.rs (1 fix)
[INFO] [stderr]        Fixed src/mutations/remove_recurrent_connection.rs (1 fix)
[INFO] [stderr]        Fixed src/mutations/remove_connection.rs (1 fix)
[INFO] [stdout] warning: `impl Iterator<Item = T>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]   --> src/genes.rs:83:64
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub fn drain_into_random(&mut self, rng: &mut impl Rng) -> impl Iterator<Item = T> {
[INFO] [stdout]    |                                                                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]   --> src/genes.rs:83:30
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub fn drain_into_random(&mut self, rng: &mut impl Rng) -> impl Iterator<Item = T> {
[INFO] [stdout]    |                              ^               ^
[INFO] [stdout]    = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]   --> src/genes.rs:83:51
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub fn drain_into_random(&mut self, rng: &mut impl Rng) -> impl Iterator<Item = T> {
[INFO] [stdout]    |                                                   ^^^^^^^^
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout]    = note: `--force-warn impl-trait-overcaptures` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    |
[INFO] [stdout] 83 -     pub fn drain_into_random(&mut self, rng: &mut impl Rng) -> impl Iterator<Item = T> {
[INFO] [stdout] 83 +     pub fn drain_into_random<U: Rng>(&mut self, rng: &mut U) -> impl Iterator<Item = T> + use<T, U> {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Migrating benches/bench_set_genome.rs from 2021 edition to 2024
[INFO] [stdout] warning: `impl Iterator<Item = T>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]   --> src/genes.rs:83:64
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub fn drain_into_random(&mut self, rng: &mut impl Rng) -> impl Iterator<Item = T> {
[INFO] [stdout]    |                                                                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]   --> src/genes.rs:83:30
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub fn drain_into_random(&mut self, rng: &mut impl Rng) -> impl Iterator<Item = T> {
[INFO] [stdout]    |                              ^               ^
[INFO] [stdout]    = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]   --> src/genes.rs:83:51
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub fn drain_into_random(&mut self, rng: &mut impl Rng) -> impl Iterator<Item = T> {
[INFO] [stdout]    |                                                   ^^^^^^^^
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout]    = note: `--force-warn impl-trait-overcaptures` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    |
[INFO] [stdout] 83 -     pub fn drain_into_random(&mut self, rng: &mut impl Rng) -> impl Iterator<Item = T> {
[INFO] [stdout] 83 +     pub fn drain_into_random<U: Rng>(&mut self, rng: &mut U) -> impl Iterator<Item = T> + use<T, U> {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 49.97s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nalgebra v0.28.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] [stderr] crater-edition-check: set_genome v0.6.7 (/opt/rustwide/workdir) updating edition from 2021 to 2024
[INFO] [stderr]     Checking set_genome v0.6.7 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0500]: closure requires unique access to `*rng` but it is already borrowed
[INFO] [stdout]   --> src/mutations/change_weights.rs:23:18
[INFO] [stdout]    |
[INFO] [stdout] 21 |             .drain_into_random(rng)
[INFO] [stdout]    |                                --- borrow occurs here
[INFO] [stdout] 22 |             .enumerate()
[INFO] [stdout] 23 |             .map(|(index, mut connection)| {
[INFO] [stdout]    |              --- ^^^^^^^^^^^^^^^^^^^^^^^^^ closure construction occurs here
[INFO] [stdout]    |              |
[INFO] [stdout]    |              first borrow later used by call
[INFO] [stdout] 24 |                 if index < change_feed_forward_amount {
[INFO] [stdout] 25 |                     connection.perturb_weight(standard_deviation, rng);
[INFO] [stdout]    |                                                                   --- second borrow occurs due to use of `*rng` in closure
[INFO] [stdout]    |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]   --> src/mutations/change_weights.rs:19:31
[INFO] [stdout]    |
[INFO] [stdout] 19 |           genome.feed_forward = genome
[INFO] [stdout]    |  _______________________________^
[INFO] [stdout] 20 | |             .feed_forward
[INFO] [stdout] 21 | |             .drain_into_random(rng)
[INFO] [stdout]    | |___________________________________^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]   --> src/genes.rs:83:51
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub fn drain_into_random(&mut self, rng: &mut impl Rng) -> impl Iterator<Item = T> {
[INFO] [stdout]    |                                                   ^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]   --> src/genes.rs:83:29
[INFO] [stdout]    |
[INFO] [stdout] 83 -     pub fn drain_into_random(&mut self, rng: &mut impl Rng) -> impl Iterator<Item = T> {
[INFO] [stdout] 83 +     pub fn drain_into_random<U: Rng>(&mut self, rng: &mut U) -> impl Iterator<Item = T> + use<T, U> {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0500]: closure requires unique access to `*rng` but it is already borrowed
[INFO] [stdout]   --> src/mutations/change_weights.rs:35:18
[INFO] [stdout]    |
[INFO] [stdout] 33 |             .drain_into_random(rng)
[INFO] [stdout]    |                                --- borrow occurs here
[INFO] [stdout] 34 |             .enumerate()
[INFO] [stdout] 35 |             .map(|(index, mut connection)| {
[INFO] [stdout]    |              --- ^^^^^^^^^^^^^^^^^^^^^^^^^ closure construction occurs here
[INFO] [stdout]    |              |
[INFO] [stdout]    |              first borrow later used by call
[INFO] [stdout] 36 |                 if index < change_recurrent_amount {
[INFO] [stdout] 37 |                     connection.perturb_weight(standard_deviation, rng);
[INFO] [stdout]    |                                                                   --- second borrow occurs due to use of `*rng` in closure
[INFO] [stdout]    |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]   --> src/mutations/change_weights.rs:31:28
[INFO] [stdout]    |
[INFO] [stdout] 31 |           genome.recurrent = genome
[INFO] [stdout]    |  ____________________________^
[INFO] [stdout] 32 | |             .recurrent
[INFO] [stdout] 33 | |             .drain_into_random(rng)
[INFO] [stdout]    | |___________________________________^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]   --> src/genes.rs:83:51
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub fn drain_into_random(&mut self, rng: &mut impl Rng) -> impl Iterator<Item = T> {
[INFO] [stdout]    |                                                   ^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]   --> src/genes.rs:83:29
[INFO] [stdout]    |
[INFO] [stdout] 83 -     pub fn drain_into_random(&mut self, rng: &mut impl Rng) -> impl Iterator<Item = T> {
[INFO] [stdout] 83 +     pub fn drain_into_random<U: Rng>(&mut self, rng: &mut U) -> impl Iterator<Item = T> + use<T, U> {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0500]: closure requires unique access to `*rng` but it is already borrowed
[INFO] [stdout]   --> src/mutations/change_weights.rs:23:18
[INFO] [stdout]    |
[INFO] [stdout] 21 |             .drain_into_random(rng)
[INFO] [stdout]    |                                --- borrow occurs here
[INFO] [stdout] 22 |             .enumerate()
[INFO] [stdout] 23 |             .map(|(index, mut connection)| {
[INFO] [stdout]    |              --- ^^^^^^^^^^^^^^^^^^^^^^^^^ closure construction occurs here
[INFO] [stdout]    |              |
[INFO] [stdout]    |              first borrow later used by call
[INFO] [stdout] 24 |                 if index < change_feed_forward_amount {
[INFO] [stdout] 25 |                     connection.perturb_weight(standard_deviation, rng);
[INFO] [stdout]    |                                                                   --- second borrow occurs due to use of `*rng` in closure
[INFO] [stdout]    |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]   --> src/mutations/change_weights.rs:19:31
[INFO] [stdout]    |
[INFO] [stdout] 19 |           genome.feed_forward = genome
[INFO] [stdout]    |  _______________________________^
[INFO] [stdout] 20 | |             .feed_forward
[INFO] [stdout] 21 | |             .drain_into_random(rng)
[INFO] [stdout]    | |___________________________________^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]   --> src/genes.rs:83:51
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub fn drain_into_random(&mut self, rng: &mut impl Rng) -> impl Iterator<Item = T> {
[INFO] [stdout]    |                                                   ^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]   --> src/genes.rs:83:29
[INFO] [stdout]    |
[INFO] [stdout] 83 -     pub fn drain_into_random(&mut self, rng: &mut impl Rng) -> impl Iterator<Item = T> {
[INFO] [stdout] 83 +     pub fn drain_into_random<U: Rng>(&mut self, rng: &mut U) -> impl Iterator<Item = T> + use<T, U> {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0500]: closure requires unique access to `*rng` but it is already borrowed
[INFO] [stdout]   --> src/mutations/change_weights.rs:35:18
[INFO] [stdout]    |
[INFO] [stdout] 33 |             .drain_into_random(rng)
[INFO] [stdout]    |                                --- borrow occurs here
[INFO] [stdout] 34 |             .enumerate()
[INFO] [stdout] 35 |             .map(|(index, mut connection)| {
[INFO] [stdout]    |              --- ^^^^^^^^^^^^^^^^^^^^^^^^^ closure construction occurs here
[INFO] [stdout]    |              |
[INFO] [stdout]    |              first borrow later used by call
[INFO] [stdout] 36 |                 if index < change_recurrent_amount {
[INFO] [stdout] 37 |                     connection.perturb_weight(standard_deviation, rng);
[INFO] [stdout]    |                                                                   --- second borrow occurs due to use of `*rng` in closure
[INFO] [stdout]    |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]   --> src/mutations/change_weights.rs:31:28
[INFO] [stdout]    |
[INFO] [stdout] 31 |           genome.recurrent = genome
[INFO] [stdout]    |  ____________________________^
[INFO] [stdout] 32 | |             .recurrent
[INFO] [stdout] 33 | |             .drain_into_random(rng)
[INFO] [stdout]    | |___________________________________^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]   --> src/genes.rs:83:51
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub fn drain_into_random(&mut self, rng: &mut impl Rng) -> impl Iterator<Item = T> {
[INFO] [stdout]    |                                                   ^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]   --> src/genes.rs:83:29
[INFO] [stdout]    |
[INFO] [stdout] 83 -     pub fn drain_into_random(&mut self, rng: &mut impl Rng) -> impl Iterator<Item = T> {
[INFO] [stdout] 83 +     pub fn drain_into_random<U: Rng>(&mut self, rng: &mut U) -> impl Iterator<Item = T> + use<T, U> {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0500`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `set_genome` (lib) due to 2 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] For more information about this error, try `rustc --explain E0500`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `set_genome` (lib test) due to 2 previous errors
[INFO] running `Command { std: "docker" "inspect" "8116b7a45072343b09e2691a158acb0a45be8deeae189c8032719bb8bc8e5f8f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8116b7a45072343b09e2691a158acb0a45be8deeae189c8032719bb8bc8e5f8f", kill_on_drop: false }`
[INFO] [stdout] 8116b7a45072343b09e2691a158acb0a45be8deeae189c8032719bb8bc8e5f8f
